/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.io.RandomAccessFile;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.swing.JOptionPane;
import svpomodel.Administrador;

/**
 *
 * @author RODRIGO
 */
@ManagedBean
@RequestScoped
public class AdministradorBean {
    	private static RandomAccessFile arquivo;

   //private Administrador administrador;
  
   
   
   
   private String nome;
    private String cpf;
    private String senha;
    private String fone;
    private String datanascimento;
    private String email;
    private String endereco;

    public AdministradorBean(){
       
   }
    public AdministradorBean (String nome, String cpf, String senha, String fone, String datanascimento, String email, String endereco) {
        this.nome = nome;
        this.cpf = cpf;
        this.senha = senha;
        this.fone = fone;
        this.datanascimento = datanascimento;
        this.email = email;
        this.endereco = endereco;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public String getDatanascimento() {
        return datanascimento;
    }

    public void setDatanascimento(String datanascimento) {
        this.datanascimento = datanascimento;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public String getFone() {
        return fone;
    }

    public void setFone(String fone) {
        this.fone = fone;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }
   
   /*public AdministradorBean(Administrador administrador) {
        this.administrador = administrador;
    }

    public Administrador getAdministrador() {
        return administrador;
    }

    public void setAdministrador(Administrador administrador) {
        this.administrador = administrador;
    }*/
    /**
	 * Salva dados de Administrador
	 * @param administrador
	 */
   public void salvar(){
       try{
           arquivo = new RandomAccessFile (new File("ad1.txt"), "rw");
       }catch(FileNotFoundException e){
           System.out.println("Arquivo Inexistente");
       }

	try{
            //administrador = getAdministrador();
            arquivo.seek(arquivo.length());

            arquivo.writeBytes(getNome()+"\n");
            arquivo.writeBytes(getCpf()+"\n");
            arquivo.writeBytes(getSenha()+"\n");
            arquivo.writeBytes(getFone()+"\n");
            arquivo.writeBytes(getDatanascimento()+"\n");
            arquivo.writeBytes(getEmail()+"\n");
            arquivo.writeBytes(getEndereco()+"\n");
            
            arquivo.seek(0);
            JOptionPane.showMessageDialog(null, arquivo.readLine());
           }catch(IOException e){
			System.out.println("Erro ao escrever no arquivo!");
            }

       }
    /**
     *	 ==============================================================================
     *	 Objetivo  : Listar administrador
     * 	 @param 
     *	 @return 
     *	 ==============================================================================
     */
   public void pesquisar(){
      
     
       String cpf1=getCpf();
         int aux1=0;
         //Declaracao do objeto "RandomAccessFile" (arquivo que ser� manipulado)
        try {
            arquivo = new RandomAccessFile(new File("ad1.txt"),"r");
        }
        catch (FileNotFoundException e) {
        //No caso do arquivo nao existir
        System.out.println("Arquivo Inexistente");
        aux1=-1;
        }
        if(aux1==0){
            try {
                int aux2=0;
                do{

                    setNome(arquivo.readLine());
                    setCpf(arquivo.readLine());
                    setSenha(arquivo.readLine());
                    setFone(arquivo.readLine());
                    setDatanascimento(arquivo.readLine());
                    setEmail(arquivo.readLine());
                    setEndereco(arquivo.readLine());
                    
                   
                    aux2++;
                    if(    getCpf() == null ? cpf1 == null : getCpf().equals(cpf1)){
                    	return;
                        
                         
                    }
                }while((aux2 < Nlinhas ("ad1.txt", 8)));
            }
            catch (IOException e) {
            //No caso de um erro ao ler do arquivo
            System.out.println("Erro lendo do arquivo");
            }

        }
         
     }
   /**
     * Objetivo : Conta o numero de linhas de um arquivo
     * @param arq
     * @param num
     * @return numero de linhas
     */
    public int Nlinhas (String arq, int num){
        int linhas=0;
        try {
            File arquivoLeitura = new File(arq);

            // pega o tamanho
            long tamanhoArquivo = arquivoLeitura .length();
            FileInputStream fs = new FileInputStream(arquivoLeitura);
            DataInputStream in = new DataInputStream(fs);


            LineNumberReader lineRead = new LineNumberReader(new InputStreamReader(in));
            lineRead.skip(tamanhoArquivo);
            // conta o numero de linhas do arquivo, come�ando com zero, por isso adiciona 1
            linhas = lineRead.getLineNumber() + 1;


        } catch (IOException e) {
        System.out.println("Arquivo inexistente");
        return 0;
        }
        if(linhas!=0) {
            linhas = ((linhas-1)/num);
        }
        return linhas;
    }

   }

